package com.duqc.nio;

import java.nio.ByteBuffer;

/**
 * @ClassName ByteBufferDemo
 * @Description NIO buffer缓冲区
 * @Author duqc
 * @Date 2021/8/23
 **/
public class ByteBufferDemo {

    public static void main(String[] args) {
        String msg = "java技术爱好者";
        //创建一个固定大小的缓冲区（allocate创建堆内缓冲区，由JVM内部维护字节数据，非直接缓冲区）
        //这里position的值为0，limit为1024，capacity为1024
        ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
        byte[] bytes = msg.getBytes();
        //写入数据到buffer中
        //这里position的值为19，limit为1024，capacity为1024
        byteBuffer.put(bytes);
        //切换成读模式，关键
        //这里position的值为0，limit为19，capacity为1024
        byteBuffer.flip();
        //创建一个临时数组，用于存储获取到的数据
        byte[] tempByte = new byte[bytes.length];
        int i = 0;
        // position < limit;
        while (byteBuffer.hasRemaining()) {
            //获取缓冲区的数据
            byte b = byteBuffer.get();
            tempByte[i] = b;
            i++;
        }
        System.out.println(new String(tempByte));
    }

}
